689B - Mike and Shortcuts - CodeForces Solution


dfs and similar graphs greedy shortest paths *1600

Please click on ads to support us..

Python Code:

n = int(input())
array = list(map(int, input().split()))
array = [(q - 1) for q in array]

dist = [0] + ([-1] * (n - 1))
 
i = 0
fila = [0]
while i < len(fila):
    k = fila[i]
    q = array[k]
 
    if dist[q] == -1:
        dist[q] = dist[k] + 1
        fila.append(q)
    if k < (n - 1) and dist[k + 1] == -1:
            dist[k + 1] = dist[k] + 1
            fila.append(k + 1)  
    if k > 0 and dist[k - 1] == -1:
            dist[k - 1] = dist[k] + 1
            fila.append(k - 1)
    i += 1
 
print(' '.join(str(e) for e in dist))


Comments

Submit
0 Comments
More Questions

1581A - CQXYM Count Permutations
337A - Puzzles
495A - Digital Counter
796A - Buying A House
67A - Partial Teacher
116A - Tram
1472B - Fair Division
1281C - Cut and Paste
141A - Amusing Joke
112A - Petya and Strings
677A - Vanya and Fence
1621A - Stable Arrangement of Rooks
472A - Design Tutorial Learn from Math
1368A - C+=
450A - Jzzhu and Children
546A - Soldier and Bananas
32B - Borze
1651B - Prove Him Wrong
381A - Sereja and Dima
41A - Translation
1559A - Mocha and Math
832A - Sasha and Sticks
292B - Network Topology
1339A - Filling Diamonds
910A - The Way to Home
617A - Elephant
48A - Rock-paper-scissors
294A - Shaass and Oskols
1213A - Chips Moving
490A - Team Olympiad